﻿using sipfe.Areas.Reporte.Models;
using sipfe.Controllers.Base;
using sipfe.service.reporte;
using sipfe.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Web.UI.WebControls;

namespace sipfe.Areas.Reporte.Controllers
{
    public class FullReporteController : BaseSipfeController
    {
        public ActionResult ReporteCab()
        {
            cargaCatlogos1();
            return View();
        }
        public ActionResult ReporteCargoCab()
        {
            ViewBag.ClaseTramite = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_CLASE_TRAMITE);
            return View("cargo/ReporteCargoCab");
        }
        public ActionResult ReporteCargoDet(string fec_IniVig, string fec_FinVig, string opcion, string hora_1, string hora_2, string n_IdeDepOrigen,
                                            string n_IdeDepDestino, string nIdeClase, string nIdeDepSol, string nAnno, string nNumCorre, string v_DepOrigen)
        {           
            ReporteService reporteService = new ReporteService();
            IList<dynamic> lista = reporteService.ReporteCargoDetService(fec_IniVig, fec_FinVig, hora_1, hora_2, n_IdeDepOrigen, 
                                                                        n_IdeDepDestino, nIdeClase, nIdeDepSol, nAnno, nNumCorre);
            int cant = lista.Count();
            string vista = "cargo/ReporteCargoDet";
            ViewBag.fecIniVig = fec_IniVig;
            ViewBag.fecFinVig = fec_FinVig;
            ViewBag.v_DepOrigen = v_DepOrigen;

            if (cant > 0)
            {
                if (opcion.Equals("2"))
                {
                    vista = "cargo/ReporteCargoPrint";
                }
                return View(vista, lista);
            }
            else
            {
                return View("general/SinRegistros");
            }           
        }

        public ActionResult bajarExcelReporteCargo(string fec_IniVig, string fec_FinVig, string opcion, string hora_1, string hora_2, string n_IdeDepOrigen,
                                                    string n_IdeDepDestino, string nIdeClase, string nIdeDepSol, string nAnno, string nNumCorre, 
                                                    string v_DepOrigen)
        {

            ReporteService reporteService = new ReporteService();
            IList<dynamic> lista = reporteService.ReporteCargoDetService(fec_IniVig, fec_FinVig, hora_1, hora_2, n_IdeDepOrigen,
                                                                        n_IdeDepDestino, nIdeClase, nIdeDepSol, nAnno, nNumCorre);
            
            
            ReporteCargoVO rc;
            List<ReporteCargoVO> listita = new List<ReporteCargoVO>();
            foreach (dynamic item in lista)
            {
                rc = new ReporteCargoVO();
                rc.solicitante      = item.solicitante;
                rc.paso             = item.nSeqPaso;
                rc.numeroSolicitud  = item.solicitud;
                rc.fechaRegistro    = item.dtFecRegistro;
                rc.fechaDerivacion  = item.fecDerivacion;
                listita.Add(rc);
            }           

            GridView gv = new GridView();
            gv.DataSource = listita;
            gv.DataBind();
            return new DownloadFileActionResult(gv, "ReporteCargoEntrega.xls");
        }


        public ActionResult ReporteTipoSilicitudCab()
        {
            return View("tipoSolicitud/ReporteTipoSilicitudCab");
        }


        public ActionResult ReporteConvocatoriaCab()
        {
            cargaCatlogos1();
            ViewBag.TITULO = "REPORTE DE SOLICITUDES POR CONVOCATORIA EN UN RANGO DE FECHA";
            return View("convocatoria/ReporteConvocatoriaCab");
        }

        public HtmlString CreaSubMenuXml()
        {
            StringBuilder submenu = new StringBuilder("");
            submenu.Append("<?xml version='1.0' encoding='utf-8'?>");
            submenu.Append("<rows>");
            submenu.Append("<page>1</page>");
            submenu.Append("<total>1</total>");
            submenu.Append("<records>1</records>");
            submenu.Append("<row>");
            submenu.Append("<cell>1</cell>");
            submenu.Append("<cell>Reporte</cell>");
            submenu.Append("<cell></cell>");
            submenu.Append("<cell>0</cell>");
            submenu.Append("<cell>1</cell>");
            submenu.Append("<cell>10</cell>");
            submenu.Append("<cell>false</cell>");
            submenu.Append("<cell>false</cell>");
            submenu.Append("</row>");
            submenu.Append("<row><cell>2</cell><cell>Por Tipo Solicitud</cell><cell>FullReporte/ReporteTipoSilicitudCab").Append("</cell><cell>1</cell><cell>2</cell><cell>3</cell><cell>true</cell><cell>true</cell></row>");
            submenu.Append("<row><cell>3</cell><cell>Por Convocatoria</cell><cell>FullReporte/ReporteConvocatoriaCab").Append("</cell><cell>1</cell><cell>4</cell><cell>5</cell><cell>true</cell><cell>true</cell></row>");
            //submenu.Append("<row><cell>3</cell><cell>JSON Data</cell><cell>jsonex.html</cell><cell>1</cell><cell>4</cell><cell>5</cell><cell>true</cell><cell>true</cell></row>");
            // submenu.Append("<row><cell>4</cell><cell>Load once</cell><cell>loadoncex.html</cell><cell>1</cell><cell>6</cell><cell>7</cell><cell>true</cell><cell>true</cell></row>");
            //submenu.Append("<row><cell>5</cell><cell>Array Data</cell><cell>localex.html</cell><cell>1</cell><cell>8</cell><cell>9</cell><cell>true</cell><cell>true</cell></row>");
            submenu.Append("</rows>");
            var rptax = new HtmlString(string.Format("{0}", submenu));
            return (HtmlString)rptax;
        }


        



        private void cargaCatlogos1()
        {
            ViewBag.TipoConvocatoria = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_TIPO_CONVOCATORIA);
            ViewBag.PaisEmisor = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_PAIS_EMISOR);
            ViewBag.TipoDocIdent = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_TIPO_DOC_IDENTIFICACION);
            ViewBag.GrupoNIvelConvoca = formaSelectGrupos(Constante.getInstance().N_IDE_GRUPO_NIVEL_CONVOCATORIA);
            ViewBag.ModalidadEstudio = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_MODALIDAD_ESTUDIO);
            ViewBag.ClaseTramite = formaSelectCompendio(Constante.getInstance().N_IDE_TABLA_CLASE_TRAMITE);
        }

    }
}
